@objectstack/service-automation@12.5.0
Patch Changes
-
8b3d363: Package metadata seed can no longer wedge the platform via record-change automation.
A seeded record whose lifecycle flow self-triggered (a
record-after-updateflow
writing back to its own trigger record) looped forever when its boolean re-entry
guard never tripped — booleans persist as integer1on SQLite/libsql and CEL
1 != trueistrue. During first-boot seed (which awaits automation) this hung
the whole kernel build.Three layers:
ExecutionContext.skipTriggers(set by the seed-loader, threaded onto
HookContext.sessionviabuildSession) makes the record-change trigger skip
flow dispatch for seed/bulk writes — seed data is end-state reference data, not
user events. Lifecycle hooks still run.coerceBooleanFields()converts SQLite 0/1 (and'0'/'1'/'true'/'false') to
real booleans on the after-hook view of a record (hookContext.result/
.previous), so flow conditions see JS booleans. The value returned to the
caller is unchanged.- The automation engine breaks a flow re-entering for the same record while an
execution is still on the stack (activeRecordFlows), a backstop for any
self-trigger loop.
-
Updated dependencies [8b3d363]
- @objectstack/spec@12.5.0
- @objectstack/core@12.5.0
- @objectstack/formula@12.5.0