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