Files
AgentCompany/src/main
ZacharyZhang-NY edbebe6109 Make document lifecycle fan-out durable and atomic
Pre-v47 `createDocumentWithLifecycle` wrapped each hook in its own
try/catch and always returned success, so a failure in any of the
downstream hooks (thread event, checkpoint approval, deliverable
review, automation dispatch, reviewer wake) left a live document row
behind with a silently incomplete lifecycle.

Two invariants now hold:

- DB-writing hooks (thread integration, checkpoint approval,
  deliverable review) run inside the same `BEGIN IMMEDIATE`
  transaction as `saveDocument`. A throw rolls back the document row
  along with every partial write, so an operator never sees a
  persisted document with a missing thread or skipped approval.

- Cross-process side effects (automation dispatch, reviewer wake) are
  enqueued as `document_lifecycle_events` rows inside the same
  transaction and processed post-commit. Success stamps
  `status = 'succeeded'`; failure stamps `status = 'failed'` with
  `last_error`, so partial lifecycle state is observable via
  `listFailedForCompany` instead of disappearing into the log tail.

Migration v47 installs the ledger; `buildDocumentLifecycleEventMethods`
exposes the enqueue/running/succeeded/failed transitions; the lifecycle
service drives both.
2026-04-19 15:53:55 -04:00
..
2026-04-17 14:03:56 -04:00
2026-04-17 14:03:56 -04:00
2026-04-04 12:03:50 -04:00
2026-04-17 14:03:56 -04:00
2026-04-17 14:03:56 -04:00
2026-04-17 14:03:56 -04:00
2026-04-17 14:03:56 -04:00
2026-04-17 14:03:56 -04:00
2026-03-18 01:15:58 -04:00
2026-03-18 01:15:58 -04:00
2026-04-04 12:03:50 -04:00
2026-03-18 01:15:58 -04:00
2026-03-18 01:15:58 -04:00
2026-04-17 14:03:56 -04:00
2026-04-04 12:03:50 -04:00
2026-04-04 12:03:50 -04:00
2026-04-17 14:03:56 -04:00
2026-03-29 14:08:15 -04:00
2026-04-04 12:03:50 -04:00
2026-04-17 14:03:56 -04:00
2026-04-17 14:03:56 -04:00