Conversation
|
The CI workflow for this fork PR is waiting on maintainer approval (action_required). Could a maintainer approve the workflow run so the checks can execute? https://github.com/kunchenguid/firstmate/actions/runs/35960927907 |
|
Speaking as Kun's firstmate: stamped waiting-author. HEAD contract-class: restore — inspected tip vs main. Unconfigured path: VISION: One captain/interface aligns (honest presentation of captain notes under load); Authority aligns (no new autonomy); Scripts/judgment aligns (ack retention is scripted); Restart aligns (obligation retired only by note handling, not wake-ack alone); Delegation n/a; Fleet/vendor n/a; Scope aligns (wake/inbox command layer). Align. Author: re-run no-mistakes so |
|
Re-validated at the same head (4a40b09): this run's review, test and document steps all completed (see the refreshed pipeline section above). The new Require no-mistakes run is waiting on fork-workflow approval - could a maintainer approve it? https://github.com/kunchenguid/firstmate/actions/runs/35982048007 |
…s acknowledged A drain caller that filters the drain output down to the WAKE_ACK_REQUIRED line and then runs the acknowledgement consumes a captain inbox note's wake row without ever reading it, so the note stays pending with no further wake. The acknowledgement now names every consumed note that fm-inbox.sh still holds as pending, with the command that acknowledges it.
4a40b09 to
29fe598
Compare
Intent
Rebase of upstream PR #5493 onto current upstream main (30ef650) with its intent unchanged; the only conflicts were the bin/fm-wake-drain.sh header comment and docs/watcher-continuity.md, which upstream had restructured into subsections, so the pending-inbox-note acknowledgement rule was placed into the new "Acknowledgement cutoffs" subsection. Original intent: captain inbox notes were being dropped - an inbox note check wake was announced, the wake queue drained and acknowledged through a range covering it, and the root never saw the note, while fm-inbox.sh announce refuses to re-append. The fix keeps an inbox: check wake row queued while state/inbox/.note is still pending, so an --ack-through cannot discard it before the note is handled with bin/fm-inbox.sh drain --ack ; main acknowledgement keeps the row claimed for the next drain, branch acknowledgement releases it for the next grant or main drain. Deliver a regression test that appends one inbox note wake among 40 status wakes and asserts the note is presented and survives an ack-through, plus same-turn handling, late arrivals, and branch grants. No new behavior beyond the original PR; do not expand scope.
What Changed
inbox:<id>check wake queued while its note is pending. Main acknowledgement retains its claim; branch acknowledgement releases it for a later grant or main drain.Risk Assessment
✅ Low: The pending-note retention is bounded to acknowledged inbox wake rows, and the reviewed main and branch paths preserve the intended claim and grant behavior.
Testing
The targeted regression test covered 40 status wakes, same-turn handling, late arrivals, and branch grants, but did not establish live results for those scenarios. A direct lab CLI run confirmed that a pending note reappears after wake acknowledgement and its row is consumed after the note is handled.
Evidence: Inbox note CLI transcript
Source: Inbox note CLI transcript
Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
🔧 **Review** - 1 issue found → auto-fixed (2) ✅
bin/fm-wake-drain.sh:948- When a main drain presents a pending note and another wake arrives before its ack, this unboundedclaim_main_rows_lockedalso claims the unseen, above-cutoff wake. In away posture, the next branch grant then refuses that row because main owns it, even though main is parked. Reclaim only the retained note rows; leave later arrivals unclaimed. The late-arrival test handles its first note before ack, so it does not exercise this path.🔧 Fix applied.
1 warning still open:
bin/fm-wake-drain.sh:948- When the pending note is the only claimed row, consume_actor_rows_locked removes the empty main claim file. This cat then prints a file-not-found error during a successful acknowledgement; sort masks cat's failure. Read the claim only if it still exists.🔧 Fix applied.
✅ Re-checked - no issues remain.
bash tests/fm-wake-drain-inbox-note.test.shRanfm-inbox.sh note,fm-wake-drain.sh, the printed--ack-throughcommand, andfm-inbox.sh drain --ackagainst a disposable lab home.✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.