feat(gatorwalk-factory): publish explains a stuck status move and every refused pinned copy (swamp-club #2710) #419

Merged
seth merged 1 commit from cue/2710-gatorwalk-factory-publish into main 2026-10-01 18:00:08 +00:00
Owner

Follow-up to #2685 (the projection publisher), from its verification reviews (swamp-club #2710). None of this changes what publish delivers; it makes failures easier to act on.

  • A refused status move no longer holds back later events. publish moves the cursor past what it delivered, keeps the status key last written, and records the failed move on the cursor (statusFailed). The next publish delivers new events and retries only the move. The error names the key, the cause and, for an unmapped key, the tracker instance whose statuses argument lacks it. The work item's status prints tracker '<instance>' could not move the ticket to '<key>': … until the move lands.
  • An entry whose status label is unmapped is labelled with the ticket's current status, with a warning, instead of failing the publish and every later entry.
  • When every copy of the pinned definition is refused (the version query and the latest copy), the error lists each copy's reason.
  • DESIGN.md says past events are worded and projected from the definition pinned now (the journal does not record the pin at start); README and the skill's driving.md describe the new status line.
  • Studio bundle rebuilt (it embeds engine code).

Tests use the local fakes only (tracker_methods_test.ts, engine/work_item_test.ts). Verified on fb62b792b: verify-build and verify-reviews passed, attestation posted. No manifest bump (gatorwalk-factory has no manifest.yaml).

🤖 Generated with Claude Code

Follow-up to #2685 (the projection publisher), from its verification reviews (swamp-club #2710). None of this changes what publish delivers; it makes failures easier to act on. - **A refused status move no longer holds back later events.** publish moves the cursor past what it delivered, keeps the status key last written, and records the failed move on the cursor (`statusFailed`). The next publish delivers new events and retries only the move. The error names the key, the cause and, for an unmapped key, the tracker instance whose `statuses` argument lacks it. The work item's `status` prints `tracker '<instance>' could not move the ticket to '<key>': …` until the move lands. - **An entry whose status label is unmapped** is labelled with the ticket's current status, with a warning, instead of failing the publish and every later entry. - **When every copy of the pinned definition is refused** (the version query and the latest copy), the error lists each copy's reason. - **DESIGN.md** says past events are worded and projected from the definition pinned now (the journal does not record the pin at start); README and the skill's `driving.md` describe the new status line. - Studio bundle rebuilt (it embeds engine code). Tests use the local fakes only (`tracker_methods_test.ts`, `engine/work_item_test.ts`). Verified on fb62b792b: verify-build and verify-reviews passed, attestation posted. No manifest bump (gatorwalk-factory has no `manifest.yaml`). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(gatorwalk-factory): publish explains a stuck status move and every refused pinned copy (swamp-club #2710)
All checks were successful
CI / Review Integrity (pull_request) Successful in 54s
CI / Validate Attestation (pull_request) Successful in 55s
fb62b792b6
A status move the tracker refuses no longer holds back later events:
publish moves the cursor past what it delivered, records the failed move
on the cursor (statusFailed), and the next publish retries only the move.
The error names the key, the cause and, for an unmapped key, the tracker
instance whose statuses argument lacks it; the work item's status prints
the failed move until it lands. An entry whose status label is unmapped
falls back to the ticket's status with a warning. When every copy of the
pinned definition is refused, each one's reason is reported. DESIGN.md
says past events are worded from the definition pinned now.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seth merged commit d7e57e41ba into main 2026-10-01 18:00:08 +00:00
seth deleted branch cue/2710-gatorwalk-factory-publish 2026-10-01 18:00:09 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
swamp-club/swamp-extensions!419
No description provided.