Vito Sansevero
94d50d15f2
test(history): let concurrent replay peers queue like ordinary writers ( #242 )
...
History writes deliberately give up after a bounded 250 ms wait so they
never stall ComfyUI; the existing bounded-timeout test still proves that.
The concurrent replay tests assert that every peer succeeds, which is a
serialization and first-capture property, so they now raise the budget
to the shared 30 s busy timeout while the first writer is held open.
The budget is one named constant, EXECUTION_BUSY_TIMEOUT_MS, shared by
the transaction helper and the background writer.
Before: 20/20 'database is locked' with the held writer. After: 0/20.
2026-10-19 10:24:58 -07:00
Vito Sansevero
06c26e0a41
test(history): hold the first concurrent writer open past the bounded wait ( #242 )
...
The concurrent replay tests expected every peer to succeed, but each peer
only waits 250 ms for BEGIN IMMEDIATE by design. On a slow Windows runner
three queued commits exceeded that and a peer raised 'database is
locked'. Holding the first writer's transaction open for 500 ms makes the
same failure deterministic on any host (20/20 locally).
2026-10-19 10:23:20 -07:00
Vito
4ef236aaf7
feat(history): persist exact run output references ( #214 )
...
* feat(history): define bounded output reference contracts
* feat(database): migrate execution output evidence to schema v3
* feat(history): persist immutable run output references
* test(history): isolate mocked node gallery monitor
* feat(history): capture bounded output descriptors with shared leases
* fix(history): authenticate payload owners and release failed captures
* feat(history): attach output evidence to exact finalized attempts
* test(history): verify run output evidence on real ComfyUI
* fix(history): release idle worker payload references
* docs(history): clarify defensive lease cleanup
* test(history): align output fixtures with native path styles
* test(history): separate restore completion from writer drain
* test(history): bound batch drains by progress and total time
2026-10-17 23:26:37 -07:00
Vito
bae542c9ac
feat(history): persist exact execution prompt contexts ( #213 )
...
* feat(history): define exact bounded execution contexts
* fix(history): retain observable sources and validate evidence
* feat(history): migrate execution contexts to schema v2
* feat(history): persist immutable execution context snapshots
* fix(history): preserve package identity for execution contexts
* feat(history): bound context payloads beside lifecycle finalization
* fix(history): fence context commits and resolve stored run identity
* fix(history): bound persisted identifier bytes before restore reads
* feat(history): bind exact runtime context to execution attempts
* test(history): discover owner invalidation callback regression
* feat(history): capture cached prompt strings without mutating host caches
* test(history): verify durable contexts on real ComfyUI hosts
* fix(history): scope transforms to captured source paths
* test(ci): update execution context tooling fixtures (#209 )
* fix(history): harden context validation and worker fixtures (#209 )
* fix(history): honor close deadlines after early joins (#209 )
2026-10-17 19:51:22 -07:00
Vito
763e6b37b1
feat(history): record durable ComfyUI execution attempts ( #212 )
...
* feat(history): normalize bounded execution evidence (#209 )
* fix(history): bound lifecycle kind checks before hashing (#209 )
* feat(history): persist execution attempts with restore fencing (#209 )
* test(api): bootstrap standalone backup restore fixtures (#209 )
* feat(history): isolate bounded asynchronous ledger writes (#209 )
* feat(history): observe actual queue attempts without altering execution (#209 )
* fix(database): honor package-scoped configuration (#211 )
* test(history): exercise real cached and headless executions (#209 )
* fix(history): reject unsupported uniqueness and isolate package fixtures (#209 )
* test(history): support Python 3.10 package fixture cleanup (#209 )
2026-10-17 16:42:07 -07:00