April 19, 2026
Refactor User Summary Logic
The deprecated trait-extraction boot pipeline was removed and replaced with UserSummaryProcessor running on the default frontal-cortex-unified job
The deprecated trait-extraction boot pipeline was removed and replaced with UserSummaryProcessor running on the default frontal-cortex-unified job.
The summary now operates via two triggers: a 30-minute cadence worker which checks recent user_specific data, and a lazy fallback in UserMessageProcessor that spawns a one-shot daemon thread if the summary row is missing but specific user data exists.
UserSummaryProcessor runs internally without transcript side effects and uses MAX_ITERATIONS=1.
The processor renders up to 200 user_specific rows as plain key: value lines for its prompt.
PostTurn actions parse {“short”, “long”} and write both to the data_graph with the source set to ‘user_summary_processor’, logging and dropping malformed JSON.
The regex fence-strip was replaced with stdlib removeprefix/removesuffix to avoid polynomial-backtracking risk and drop the ‘re’ import.
The UserSummaryProcessor has been documented as an internal subclass of SKIP_TRANSCRIPT_WRITE=True, and the corresponding worker process has been added to the documentation.
Concurrency tests were hardened by replacing unittest.mock.patch with a real subclass and module-attribute swap, and unit tests now cover empty/whitespace fields.
-
Replaced trait-extraction boot pipeline with UserSummaryProcessor
-
Summary is triggered by a 30-min cadence worker or lazy fallback
-
UserSummaryProcessor renders up to 200 user_specific rows for prompting
-
Regex fence-strip replaced with stdlib removeprefix/removesuffix
-
Added documentation for UserSummaryProcessor and its worker
-
Concurrency tests use real subclasses instead of mocks