Repository navigation
feat(j5): terminate archived participant obligations - #21
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Comment |
Final lifecycle E2E attestationAt exact head Negative control: the archived participant’s reply was rejected with Posted by an AI agent on Jackson's behalf. |
Problem
Retiring an A2A participant could silently strand open exchanges, leaving the counterparty waiting without a truthful terminal fact.
Fix
thread.archivedandthread.deletedevents: registered participants retire with completeparticipant.lefthistory and their open exchanges becomeexchange.dropped.ArchiveFactsServiceas a display-only, composable AR2 read boundary; placement is a discriminated unknown/none/known state pending ratification.008_LifecycleClosure, expanding terminal exchange state while opaquely preserving A4 inbox rows across SQLite parent-table rebuilds.Settled scope and migration contracts
Verification
8861c66386fe5b4cf2a4b13bc719d3fa8df3b860; targeted domain/migration/runtime suites, mutation controls, typecheck, and lint passed.participant.left->exchange.dropped-> one deliveredlifecycle_notice; the waiter acknowledged “I won’t retry or replace the retired participant”; an archived-sender reply failed closed withA2ASenderRetiredErrorand appended zero events. Evidence: Traycer artifacta9-luna-e2e(worktree-local state; exact-PID teardown).Coverage limits
AR2 is service-complete but has no route or MCP registration until the human archive-dialog surface is ratified. Squadron archive, warn/confirm UI, and re-entry semantics remain deliberately out of scope.
Built with Codex / GPT-5.6.