Skip to content

feat: add PR communication gate and fleet operations tooling - #2946

Open
bingb0t5 wants to merge 42 commits into
kunchenguid:mainfrom
bingb0t5:fm/fm-pr-comms-gate
Open

feat: add PR communication gate and fleet operations tooling#2946
bingb0t5 wants to merge 42 commits into
kunchenguid:mainfrom
bingb0t5:fm/fm-pr-comms-gate

Conversation

@bingb0t5

@bingb0t5 bingb0t5 commented Aug 24, 2026

Copy link
Copy Markdown

Intent

Add the same fail-closed CEO-overview PR check Firstmate currently lacks, consuming the proven check pattern from mrbeanz-brains PR 11. Require What is changing, Why it matters, Customer or business impact, Risk and rollout, and the other Lalo-equivalent sections that fit this repo: Decision needed, Module-boundary decision, and Validation with Checks passed, Checks not run, and Evidence and limitations. Prove that a non-compliant description fails and a compliant description passes in real CI. Do not invent a weaker copy or add a forgotten secret that makes drift self-compare. Follow firstmate-coding-guidelines. Land on https://github.com/bingb0t5/firstmate. Use no-mistakes and never --yes. Preserve PR 5 automatic stow behavior alongside the fail-closed PR communication gate after merging the latest fork main. Resolve conflicts on their merits with a merge, not a rebase, and keep every accepted pipeline fix commit. Run one fresh validation pass on the merged head, including the fail-then-pass CEO-overview proof. The target PR on bingb0t5/firstmate must be conflict-free and green.

What Changed

  • Add fail-closed PR communication workflows, a required CEO-focused template, and pinned source-of-truth drift verification for the vendored assessor.
  • Add a Tailscale-bound fleet quota dashboard that serves live quota-axi provider status and reset windows.
  • Add opt-in, interval-gated automatic /stow reminders with separate attempt and reset-safe markers.

Risk Assessment

✅ Low: The change preserves automatic stow behavior and implements a well-bounded fail-closed PR communication gate with trusted base-branch verification, pinned entrypoint and assessor checks, and behavioral coverage for compliant, non-compliant, drift, and remote-failure cases.

Testing

Focused PR-gate, session-start automatic-stow, and Pi integration tests passed on merged head 503b615; a fresh CLI exercise rejected an incomplete description with every missing requirement and accepted a complete one, while GitHub Actions runs 32720666105 and 32721072427 demonstrate the same fail-then-pass behavior in real CI. The worktree stayed clean; final PR #6 publication, conflict resolution visibility, and green checks belong to the outer push and CI phases.

Evidence: Target commit CLI fail-then-pass transcript

Source: Target commit CLI fail-then-pass transcript

Target commit: 503b615d0db7bf83630c7ff76f682ae1c92a8ccf

=== NON-COMPLIANT PR DESCRIPTION ===
Clarity check: The PR title is very short. State the user or business outcome.
Cannot enter staging until completed: CEO overview: Why it matters (no line found); CEO overview: Customer or business impact (no line found); CEO overview: Risk and rollout (no line found); Decision needed; Module-boundary decision; Validation: Checks passed (no line found); Validation: Checks not run (no line found); Validation: Evidence and limitations (no line found)
::error::Cannot enter staging until completed: CEO overview: Why it matters (no line found); CEO overview: Customer or business impact (no line found); CEO overview: Risk and rollout (no line found); Decision needed; Module-boundary decision; Validation: Checks passed (no line found); Validation: Checks not run (no line found); Validation: Evidence and limitations (no line found)
exit_code=1

=== COMPLIANT PR DESCRIPTION ===
PR communication is complete.
exit_code=0

=== REAL CI PROOF ON FORK PR #4 ===
Failing run: https://github.com/bingb0t5/firstmate/actions/runs/32720666105
Passing run: https://github.com/bingb0t5/firstmate/actions/runs/32721072427
- Evidence: [Real CI rejection of non-compliant PR description](https://github.com/bingb0t5/firstmate/actions/runs/32720666105) - Evidence: [Real CI acceptance of compliant PR description](https://github.com/bingb0t5/firstmate/actions/runs/32721072427)

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 git diff 038d0f7ec6ba7238a151722931434dcf06ff37c4..503b615d0db7bf83630c7ff76f682ae1c92a8ccf and relevant commit history.
  • bash tests/pr-communication.test.sh
  • bash tests/fm-session-start.test.sh
  • bash tests/fm-calm-pi-extension.test.sh
  • Direct node --experimental-strip-types scripts/check-pr-communication.ts execution with non-compliant and compliant PR bodies on target commit 503b615d0db7bf83630c7ff76f682ae1c92a8ccf.
  • gh-axi run view 32720666105 --repo=bingb0t5/firstmate --log-failed
  • gh-axi run view 32721072427 --repo=bingb0t5/firstmate
  • gh-axi pr view 6 --repo=bingb0t5/firstmate and gh-axi pr checks 6 --repo=bingb0t5/firstmate
  • Verified fork main commit 8c74f4e5df2a6ba291b438926c00a9a056996c26 is an ancestor of the merge target and the worktree remained clean.
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

…er check

The adjacent-follow-up E2E case captured the tmux pane for its
duplicate-captain-answer assertion immediately after the session file
confirmed processing, with no settle wait, unlike every other
readiness check in this test. Sending two followUp deliveries queues
more Calm presentation work (an extra operational-user row plus its
hiding invalidation) than a single one, so the already-settled captain
answer's redraw could still be in flight at that instant, making the
check flaky. Poll the pane the same way the session-file wait already
does, and track the peak count seen along the way so a captain answer
that is genuinely rendered twice for even one frame still fails even
if a later redraw were to self-correct.
…ss gates

Adds the two triggers from data/fm-auto-stow/report.md so the captain no
longer has to type /stow to keep memory current, without a new daemon,
watcher, or cascade:

- bin/fm-session-start.sh prepends a STOW DUE line to a compact/clear
  session-start re-emit when state/.last-stow is missing or older than
  FM_AUTO_STOW_INTERVAL_SECS (default ~24h), silent when current.
- AGENTS.md section 8 rule 4 now also checks that same marker on a
  heartbeat wake, using the same larger-than-heartbeat interval, so a
  pass runs at most once per interval rather than on every wake.
- The stow skill touches state/.last-stow only at the end of a pass it
  can call reset-safe, mirroring state/.last-heartbeat's bare-mtime
  marker.

Away-mode heartbeats stay bash-only and unaffected: they never reach an
LLM turn to run /stow in, per the existing away-daemon design.
Vendor the lalo-admin assessor already proven on mrbeanz-brains, with the
same drift pin and live SoT comparison, so firstmate PRs cannot skip the
required overview, decision, module-boundary, and validation sections.
Promote the last-stow marker contract out of the cascade heading so a
secondmate home still throttles automatic /stow. Pin the stale re-emit
age assertion to a 9xxxx band instead of the prefix 900. Document that
default Pi branch supervision does not run heartbeat /stow, and leave
that wiring as follow-up (kunchenguid#2944) rather than
editing fm-branch-prompt.sh.
Adds a stdlib-only Python server that shells quota-axi --json per
request and serves one self-contained page (fleet summary, one card
per provider, live/signed-out/error states in quota-axi's own words,
30s client refresh), matching the design in
data/fm-quota-dashboard/report.md. Binds only to this host's own
Tailscale IPv4 address, confirmed via `tailscale ip -4`, and refuses
to start otherwise - never 0.0.0.0, never a public interface.
Raise the shell-out to 45s so one slow provider degrades instead of
blanking the page. Prove the listener is address-scoped via 127.0.0.2,
and keep the scripts index voice cluster intact.
@greptile-apps

greptile-apps Bot commented Aug 24, 2026

Copy link
Copy Markdown

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Reviews (7): Last reviewed commit: "Merge fork main preserving PR 5 and PR c..." | Re-trigger Greptile

Comment thread .github/workflows/pr-communication.yml Outdated
Comment thread .github/workflows/pr-communication.yml Outdated
@bingb0t5 bingb0t5 changed the title feat: enforce complete PR communication feat: enforce PR communication requirements Aug 24, 2026
Vendor the lalo-admin assessor already proven on mrbeanz-brains, with the
same drift pin and live SoT comparison, so firstmate PRs cannot skip the
required overview, decision, module-boundary, and validation sections.
@bingb0t5
bingb0t5 force-pushed the fm/fm-pr-comms-gate branch from 8c62aa3 to 4f0bbfc Compare August 24, 2026 14:03
@bingb0t5 bingb0t5 changed the title feat: enforce PR communication requirements feat: enforce fail-closed PR communication checks Aug 24, 2026
Keep the automatic stow updates alongside the fail-closed CEO-overview validation changes.

Co-authored-by: Cursor <cursoragent@cursor.com>
@bingb0t5 bingb0t5 changed the title feat: enforce fail-closed PR communication checks feat: add PR communication gate and fleet operations tooling Aug 24, 2026
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.

1 participant