Loading…
Reference in a new issue
No description provided.
Delete branch "fix/llm-trigger-audit-followups"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Completes the LLM trigger audit that produced v3.11.1. Five features wired to the wrong event or to no event at all, plus a broker-blocking fix found while doing them.
Closes #271. Closes #285. Closes #286. Closes #287. Closes #288.
No migrations.
BOT_CONTRACT_VERSIONstays 1 — nothing touches/api/bot/*.Commits
fix(backend)fix(backend)fix(backend)fix(backend)perf(backend)chore(release)Three of these were more than the issue described
#271 was two bugs. Raising the 800-char cap was the obvious fix, but
_truncatekeepstext[:limit]— the beginning. For a prep sheet the end of the previous summary is the most valuable line in it, which is why the report read as "not pulling end of last session" rather than "truncated". Measured against the live instance, prep was seeing 28-46% of the previous session, always the opening.#285's most important path changes no data. Approving a bot proposal doesn't touch the body — it only flips
proposed_by_bot. Hookingcreateandupdate, the obvious reading, would have missed the single most common way entries become canon on a real instance.#288 had three bypasses, not the two the issue named. The third — the cold-pool draw — is arguably the worst, since a cold draw generates a whole batch and buffers the rest, making it the largest single token spend of the three. It was found by writing the guard test before trusting the issue's list.
The performance change is larger than the regression that caused it
Adding an enqueue to ordinary lore-entry writes (#285) made the suite 4× slower, which exposed something that had always been true: there is no broker in the test environment, so every unmocked
.delay()was waiting on a connection that could never succeed.880 tests: 16m12s → 36s. Most of that "baseline" was never work. CI runs Postgres as a service but no Redis, so it was paying it too.
The same defaults meant a single enqueue against an unreachable broker took ~2 minutes to fail in production — and #285/#286 put enqueues on a user-facing request path (approving a proposal). Bounded to under 15s, with a test asserting that budget.
Deliberately not
task_always_eager, which would execute tasks and change test semantics.Deliberate scope boundaries
linked_session_idschedules nothing. Making it campaign-scoped is a signature change.lore_service.pyfor no revertability gain.Two stale tests updated rather than deleted
test_lore_consolidate_finds_match_rows_written_by_helperasserted the relationship task was fired at generation time — the exact behaviour #286 removes. It was pinning the bug in place. Now asserts the opposite, with the reasoning inline.Verification
ruff check+ruff format --check: clean, 194 filesscripts/check_version_sync.py: OK — app 3.11.2, bot contract v1🤖 Generated with Claude Code