Skip to content

fix(bin): read aged holds via backlog-json, not contribution-input - #6

Merged
keenvc merged 6 commits into
mainfrom
fm/fm-hold-reverify-snapshot-bound
Sep 28, 2026
Merged

keenvc merged 6 commits into
mainfrom
fm/fm-hold-reverify-snapshot-bound

Conversation

@keenvc

@keenvc keenvc commented Sep 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add fm-fleet-snapshot.sh --backlog-json for consumers that only need the canonical backlog projection.
  • Point fm-hold-reverify.sh at that mode instead of --contribution-input, which spent ~96s on per-task merge-authority work this sweep never reads and always exceeded the five-second projection bound.
  • Regression test: aged captain holds still surface findings when contribution-input would exceed the bound.

Evidence (before / after)

Methodology: FM_HOME=/home/azureuser/firstmate FM_HOLD_REVERIFY_INTERVAL=0 FM_SNAPSHOT_NOW=2026-09-28T00:00:00Z bin/fm-hold-reverify.sh check on the captain home (432 backlog rows, 227 task metas).

Result
Before (on fm/fm-recurring-hold-reconcile, contribution-input + 5s bound) hold re-verify: could not read the aged-hold projection
After (this branch) hold re-verify: … among 12 aged captain holds (35 deferred); docket state/hold-reverify/docket.json in ~1.4s

Narrow-read timing: bin/fm-fleet-snapshot.sh --backlog-json on the same home completes in ~0.75s vs contribution-input failing with Argument list too long / multi-minute task-meta walks.

Test plan

  • bash tests/fm-hold-reverify.test.sh
  • CI via no-mistakes

Made with Cursor

keenvc and others added 6 commits September 28, 2026 15:37
The hold re-verify sweep only needs canonical backlog rows; contribution-input
also walks every task meta for merge-authority resolution, which took ~96s at
this fleet size and always exceeded the five-second projection bound. Add
fm-fleet-snapshot.sh --backlog-json for that narrower read and point the sweep
at it so failures stay loud without raising the timeout.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sort aged captain holds oldest-first before the per-sweep cap, let
FM_HOLD_REVERIFY_BUDGET_SECS govern the backlog projection bound, clamp
forge probes to remaining budget, skip probes for predetermined
not-a-decision rows, drop the classify subcommand, and document
--backlog-json.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Adds the toolbelt row and prose alignment from the failed run's document
step without rebasing onto upstream main.

Co-authored-by: Cursor <cursoragent@cursor.com>
Apply captain inbox 006 on the fork publication branch without rebasing onto upstream main.
@keenvc
keenvc marked this pull request as ready for review September 28, 2026 19:14
@keenvc
keenvc changed the base branch from fm/fm-recurring-hold-reconcile to main September 28, 2026 19:31
@keenvc keenvc closed this Sep 28, 2026
@keenvc keenvc reopened this Sep 28, 2026
@keenvc
keenvc merged commit ab9c189 into main Sep 28, 2026
18 of 20 checks passed
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